// pages/me/me.js
const db = wx.cloud.database({
    env: 'cloud-4gjj1uaeabd15566'
})

Page({

    /**
     * 页面的初始数据
     */
    data: {
        nickname: '点击登录',
        avatar: '/images/nothing.png',
        islogin: false  // 描述是否已登录
    },

    /** 点击头像, 选择图片, 将新头像路径更新到数据库 */
    tapAvatar(){
        if(!this.data.islogin){ return }
        wx.chooseImage({
          count: 1,
          success: (res)=>{
              console.log(res)
              let tempPath = res.tempFilePaths[0]
              this.setData({avatar: tempPath})
              // 将选中的图片, 上传到服务器,(云存储)
              // 获取到服务端路径, 更新到数据库中才可以持久化保存
              this.uploadFile(tempPath)
          }
        })
    },

    /** 上传文件 
     *  tempPath:本地文件路径 /xxxx/xxxx/xxx/a.jpg   */
    uploadFile(tempPath){
        // 根据tempPath, 生成一个随机的图片名字, 用于设置云端存储路径
        // tempPath:  /xxxx/xxxx/xxx/a.jpg
        let ext = tempPath.substring(tempPath.lastIndexOf('.'))
        // 云端路径:  img_随机数.后缀名
        let cloudPath = 'img_'+Math.random()+ext
        // 上传文件
        wx.cloud.uploadFile({
            filePath: tempPath,
            cloudPath: cloudPath,
            success: (res)=>{
                console.log(res)  //res.FileID
                let fileID = res.fileID
                // 将fileID更新到数据库, 更新当前用户的头像路径
                this.updateAvatarUrl(fileID)
            }
        })
    },

    /** 更新云数据库中当前用户的头像路径 
     *  将头像路径改为fileID */
    updateAvatarUrl(fileID){
        wx.cloud.callFunction({
            name: 'sum', 
            data: {a: 1, b: 2}
        }).then(res=>{
            console.log(res)
            // 云函数将会返回openid
            let openid = res.result.openid
            db.collection('users').where({
                _openid: openid
            }).update({
                data:{
                    avatarUrl: fileID
                }
            }).then(res=>{ // 修改成功
                console.log(res)
            }).catch(err=>{ // 修改失败
                console.warn(err)
            })
        })



    },

    /** 点击登录 */
    tapLogin(){
        if(this.data.islogin){ return }

        wx.getUserProfile({
          desc: '赶紧允许, 否则手机爆炸~',
          success: (res)=>{
              console.log(res)
              this.setData({
                  islogin: true,
                  nickname: res.userInfo.nickName,
                  avatar: res.userInfo.avatarUrl
              })
              // 查询数据库, 验证用户是否已经存在
              this.verifyUser(res.userInfo)
            //   // 若该用户没有注册过, 则注册到自家数据库
            //   this.regist(res.userInfo)
          }
        })
    },

    /** 验证数据库中当前用户是否已存在 
     *  1. 若存在, 则直接获取用户数据
     *  2. 若不存在, 则直接注册
     */
    verifyUser(userInfo){
        // 由于权限设置, 当前用户只能查到自己的数据
        db.collection('users').get().then(res=>{
            console.log(res)
            // 判断res.data有没有查到用户数据
            if(res.data.length==0){ // 没查到
                this.regist(userInfo) // 注册数据
            }else { // 查到了: 重新更新界面
                let user = res.data[0]
                this.setData({
                    nickname: user.nickName,
                    avatar: user.avatarUrl
                })
            }
        })
    },

    /** 新用户数据, 注册到自家数据库 users集合中 */
    regist(userInfo){
        db.collection('users').add({
            data: userInfo,
            success: (addRes)=>{
                console.log(addRes)
            }
        })
    },

    doubleTapEvent(){
        console.log('么么哒~~')
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {

    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function () {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function () {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function () {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function () {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function () {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function () {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function () {

    }
})